A network comprises a plurality of network nodes, which are typically each either individual dataprocessors or microprocessors, physically interconnected to one another in some manner. The term ‘computer’ is used here in a general sense and is intended to refer to any device or component capable of performing some kind of processing task.
There are a number of different ways in which the individual networked computers can be arranged to co-operate with each other to ensure the successful operation of the network. One such way is to arrange for the individual computers to distribute, or share, the various tasks and processes amongst themselves that are required for the operation of the network, such as controlling the flow of information between the individual computers. This type of network is often referred to as a peer-to-peer network, as no simple networked computer is denoted as being more ‘important’ than any other.
Peer-to-peer networks tend to be more flexible in their operation and are attractive for use in scenarios where the network structure is either unknown, or prone to change. For example, a public network based on the internet, or a company intranet, is most likely to be a peer-to-peer network as the network will be subject to users logging on and off from it.
However, the distribution of tasks and responsibilities across a peer-to-peer network also tends to make it difficult to predict the behaviour of the network and in particular to predict and control instabilities that may occur due to inappropriate loads being put upon the network. Examples of such inappropriate loads include excessive demand for a resource, such as a popular media file, the transfer of the functionality to a node from a further node that has ‘dropped out’ of the network for some reason, or a malicious demand for resources such as occurs during a ‘Denial of Service’ attack.